#define _CRT_SECURE_NO_WARNINGS
//int dominantIndex(int* nums, int numsSize) {
//    int max = nums[0];
//    int max_sm = INT_MIN;
//    int index = 0;
//
//    for (int i = 1; i < numsSize; i++)
//    {
//        if (nums[i] > max)
//        {
//            max = nums[i];
//            index = i;
//        }
//    }
//    for (int i = 0; i < numsSize; i++)
//    {
//        if (nums[i] > max_sm && nums[i] < max)
//        {
//            max_sm = nums[i];
//        }
//    }
//    if (max >= max_sm * 2)
//        return index;
//    else
//        return -1;
//}
//int compar(const void* num1, const void* num2)
//{
//    return *(int*)num1 - *(int*)num2;
//}
//
//int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize) {
//    *returnSize = 0;
//
//    qsort(nums1, nums1Size, sizeof(int), compar);
//    qsort(nums2, nums2Size, sizeof(int), compar);
//
//    if (nums1[0] > nums2[nums2Size - 1] || nums2[0] > nums1[nums1Size - 1])
//        return NULL;
//
//    int range = nums1Size > nums2Size ? nums1Size : nums2Size;
//    int* num = (int*)malloc(sizeof(int) * range);
//    memset(num, 0, sizeof(int) * range);
//
//    int begin1 = 0;
//    int begin2 = 0;
//    while (begin1 < nums1Size && begin2 < nums2Size)
//    {
//        if (nums1[begin1] > nums2[begin2])
//            begin2++;
//        else if (nums1[begin1] < nums2[begin2])
//            begin1++;
//        else
//        {
//            if (*returnSize == 0)
//            {
//                num[(*returnSize)++] = nums1[begin1];
//                begin1++;
//                begin2++;
//                continue;
//            }
//
//            else if ((*returnSize) > 0 && nums1[begin1] != num[*returnSize - 1])
//            {
//                num[(*returnSize)++] = nums1[begin1];
//            }
//            begin1++;
//            begin2++;
//        }
//    }
//    return num;
//}
#include<assert.h>
#include<stdlib.h>
#include<stdio.h>
#include<limits.h>
enum State
{
    VALID,//0
    INVALID//1
};
enum State state = INVALID;
int my_atoi(const char* str)
{
    assert(str);

    while (*str == ' ')
        str++;
    if (*str == '\0')
        return 0;

    int flag = 1;
    if (*str == '-')
    {
        flag = -1;
        str++;
    }
    if (*str == '+')
    {
        str++;
    }

    long long ret = 0;

    while (isdigit(*str))
    {
        ret = ret * 10 + flag * (*str - '0');
        if (ret > INT_MAX || ret < INT_MIN)
            return 0;
        str++;
    }
    if (*str == '\0')
    {
        state = VALID;
        return (int)ret;
    }
    else
        return (int)ret;
}
int main()
{
    printf("%d\n", atoi(NULL));

    return 0;
}